#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow {
  Q_OBJECT

public:
  MainWindow(QWidget *parent = nullptr);
  ~MainWindow();

private slots:
  /**
   * @brief MainWindow::on_clear_all_clicked
   * 清空按钮点击事件
   */
  void on_clear_all_clicked(void);
  /**
   * @brief on_open_port_clicked
   * 打开串口按钮点击事件
   */
  void on_open_port_clicked(void);

  /**
   * @brief on_about_app_triggered
   * 关于软件 选项事件
   */
  void on_about_app_triggered();

private:
  Ui::MainWindow *ui;
  /**
   * @brief class Config
   * 配置类
   */
  class Config {
  public:
    QString port;
    uint32_t baud;
    QString stop_bit;
    QString data_bit;
    QString parity_bit;
    bool cts;
    bool rts;
    bool timestamp;
    bool debug;

    QString to_string();
  };
  // 波特率列表
  QList<uint32_t> baudList = {300,    600,    1200,  2400,  4800,
                              9600,   19200,  38400, 57600, 115200,
                              230400, 460800, 921600};
  Config *config;
};
#endif // MAINWINDOW_H
